"""
百度AI开放平台API使用示例

本示例展示了如何使用BaiduAI类及其专用类调用百度AI开放平台的各种功能。
在运行前，请确保已正确设置API Key和Secret Key。
"""

import os
import json
from cn_api_adapters import BaiduAI, BaiduOCR, BaiduSpeech, BaiduNLP


def baiduai_api_example():
    """
    百度AI开放平台API使用示例函数
    """
    # 1. 初始化通用BaiduAI
    # 从环境变量获取配置或直接设置
    api_key = os.getenv('BAIDU_API_KEY', 'your_api_key')
    secret_key = os.getenv('BAIDU_SECRET_KEY', 'your_secret_key')
    
    # 创建API实例
    baidu_ai = BaiduAI(api_key=api_key, secret_key=secret_key, debug=True)
    
    print("百度AI开放平台API使用示例")
    print("="*50)
    
    # 2. 获取AccessToken
    try:
        token = baidu_ai.access_token
        print(f"\n1. 获取AccessToken成功: {token[:10]}...")
    except Exception as e:
        print(f"获取AccessToken失败: {e}")
        return
    
    # 3. 使用专用OCR类
    print("\n2. OCR文字识别示例:")
    try:
        # 初始化OCR专用类
        ocr = BaiduOCR(api_key=api_key, secret_key=secret_key)
        
        # 通用文字识别
        # with open("image.jpg", "rb") as f:
        #     image = f.read()
        # result = ocr.general_basic(image)
        # print(f"通用文字识别结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("通用文字识别方法已准备好，请提供有效的图片后调用")
        
        # 身份证识别
        # with open("id_card_front.jpg", "rb") as f:
        #     id_card = f.read()
        # result = ocr.idcard(id_card, id_card_side="front")
        # print(f"身份证识别结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("身份证识别方法已准备好，请提供有效的身份证图片后调用")
        
        # 银行卡识别
        # with open("bank_card.jpg", "rb") as f:
        #     bank_card = f.read()
        # result = ocr.bankcard(bank_card)
        # print(f"银行卡识别结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("银行卡识别方法已准备好，请提供有效的银行卡图片后调用")
    except Exception as e:
        print(f"OCR示例出错: {e}")
    
    # 4. 使用专用Speech类
    print("\n3. 语音识别与合成示例:")
    try:
        # 初始化Speech专用类
        speech = BaiduSpeech(api_key=api_key, secret_key=secret_key)
        
        # 语音识别（ASR）
        # with open("audio.pcm", "rb") as f:
        #     audio = f.read()
        # result = speech.asr(audio, format="pcm", rate=16000)
        # print(f"语音识别结果: {result['result'][0]}")
        print("语音识别方法已准备好，请提供有效的音频文件后调用")
        
        # 语音合成（TTS）
        # result = speech.tts("这是百度AI语音合成测试", lang="zh", ctp=1, cuid="test")
        # with open("synthesized_speech.mp3", "wb") as f:
        #     f.write(result)
        # print("语音合成成功，已保存为MP3文件")
        print("语音合成方法已准备好")
    except Exception as e:
        print(f"语音示例出错: {e}")
    
    # 5. 使用专用NLP类
    print("\n4. 自然语言处理示例:")
    try:
        # 初始化NLP专用类
        nlp = BaiduNLP(api_key=api_key, secret_key=secret_key)
        
        # 词法分析
        # result = nlp.lexer("百度是一家高科技公司")
        # print(f"词法分析结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("词法分析方法已准备好")
        
        # 情感分析
        # result = nlp.sentiment_classify("今天天气真好")
        # print(f"情感分析结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("情感分析方法已准备好")
        
        # 文本纠错
        # result = nlp.ecnet("百度是一家高基公司")
        # print(f"文本纠错结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("文本纠错方法已准备好")
        
        # 文本相似度
        # result = nlp.simnet("百度是一家高科技公司", "百度是中国的科技巨头")
        # print(f"文本相似度结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("文本相似度方法已准备好")
    except Exception as e:
        print(f"NLP示例出错: {e}")
    
    # 6. 使用通用BaiduAI类调用图像识别
    print("\n5. 图像识别示例:")
    try:
        # 通用物体识别
        # with open("object.jpg", "rb") as f:
        #     image = f.read()
        # result = baidu_ai.advanced_general(image)
        # print(f"通用物体识别结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("通用物体识别方法已准备好，请提供有效的图片后调用")
        
        # 人脸识别
        # with open("face.jpg", "rb") as f:
        #     face_image = f.read()
        # result = baidu_ai.face_detect(face_image)
        # print(f"人脸识别结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
        print("人脸识别方法已准备好，请提供有效的人脸图片后调用")
    except Exception as e:
        print(f"图像识别示例出错: {e}")
    
    print("\n" + "="*50)
    print("百度AI开放平台API示例演示完成")


if __name__ == "__main__":
    baiduai_api_example()